////////////////////////////////////////////////////////////////////////
// Last svn revision: $Id:  $ 
////////////////////////////////////////////////////////////////////////
/// \class drow::MLC::def::DefaultMatrixOp
///
/// \brief The default library of matrix operations
///
/// \author Douglas Richardson         <douglas.richardson@swyrich.com>
///
/// REVISION HISTORY:\n
/// 	22/03/12 : Douglas Richardson - New File \n
///
/// \details The default library of matrix operations
///
////////////////////////////////////////////////////////////////////////

#include "MLC/DefaultMatrixOp.hh"

namespace drow {
namespace MLC {
namespace def {

Matrix DefaultMatrixOp::Add(const Matrix &m1, const Matrix &m2) {
    if(!(m1.Rows == m2.Rows && m1.Columns == m2.Columns)) throw "Matrices of incorrect sizes";
    Matrix m3;
    m3.Rows = m1.Rows; m3.Columns = m1.Columns;
    m3.Data = new double[m1.Rows * m1.Columns];
    for(int i = 0, c = m1.Rows * m1.Columns; i < c; i++) {
        m3.Data[i] = m1.Data[i] + m2.Data[i];
    }
}
Matrix DefaultMatrixOp::Subtract(const Matrix &m1, const Matrix &m2) {
    return Matrix();
}
Matrix DefaultMatrixOp::Multiply(const Matrix &m1, const Matrix &m2) {
    return Matrix();
}
Matrix DefaultMatrixOp::Dot(const Matrix &m1, const Matrix &m2) {
    return Matrix();
}
Matrix DefaultMatrixOp::Cross(const Matrix &m1, const Matrix &m2) {
    return Matrix();
}
Matrix DefaultMatrixOp::Norm(const Matrix &m1, const int normSize) {
    return Matrix();
}
Matrix DefaultMatrixOp::Transpose(const Matrix &m1) {
    return Matrix();
}

}
}
}